'''
* This is the projet for Brtc LlmOps Platform
* @Author Leon-liao <liaosiliang@alltman.com>
* @Description //TODO 
* @File: study_home_work.py
* @Time: 2025/7/2
* @All Rights Reserve By Brtc
'''
### 家庭作业
'''
1、 实现一个注册功能
输入： username    password  cpassword
最多可以输错 3次
用户名最少 6位， 最长 20位
密码最少8位最长15位
两次输入要一一致
注册成功后存在  txt文件夹里面
'''
# 流程
"""  
1、输入用户名, 判断 用户名 是否存在存在的话就直接，返回打印信息
2、用户名，是否符合要求，          6<len(username)<20;
3、输入密码,判断密码长度是否符合要求 8<len(password)<20);
4、再次输入密码，要求是：跟之前的密码要一致; 
5、上面所有的流程都OK的话那么我们就存入文档;
"""
""" 
需要实现的函数：
1、字符串是否符合要求
2、读写文件的写入注册信息；
3、判断用户名是否已经被注册;
"""

"""
* @Author Leon-liao
* @Function:
* @Description //传入用户名判断用户是否被注册
* @Date :2025/7/2  20:19
* @Param:
"""
def  is_reg(name):
    with open("./reg.txt", "r+") as reginfo:# 这种表达式 我们不需要自己去关闭文件， 解释器会自动帮我们关闭
        all_lines = reginfo.readlines() # 一次性会把所有的 行读出来
        for line in all_lines:# 一个一个  遍历 列表里面的内容
            """  
                Json 或者字典去存储{'XXX':'XXX', 'XX':'xxx'}
            """
            data_dic = dict(eval(line.replace("\n", "")))#{'Username':'leon', 'Password':'123456'} 就是一个字典 字符串，也可以存json
            if data_dic.get("Username") == name:
                return True
            else:
                continue
    return False



def input_username():
    # 总共允许出错 3 次
    err_count = 3
    while err_count > 0:
        err_count = err_count - 1# 出错一次就减去1
        name = input("请输入用户名:")
        if len(name) <6 or len(name) > 20:# 长度不对 就报错
            print(f"输入的密码长度有误， 期望的密码长度是6<---->20之间。您的密码长度是{len(name)}")
        elif is_reg(name):# 如果已经被注册就报错
            print(f"用户名: {name},已经被注册！！")
        else:# 符合要求的用户名
            return name
    return None# 如果  没有符合要求的就返回None 用于 判断是否成功


def input_password():
    err_count = 3
    while err_count > 0:
        err_count = err_count - 1
        password = input("请输入密码:")
        if len(password) <8 or len(password) > 20:
            print(f"输入密码长度因该是 8<---->20 实际的长度是{len(password)} 你还有 {err_count} 次机会")
        else:
            return password
    return None


def input_cpassword(pwd:str):
    err_count = 3
    while err_count > 0:
        err_count = err_count - 1
        password = input("请再次输入您的密码:")
        if pwd!=password:
            print("两次输入的密码, 不一致请重新输入！！")
        else:
            return True
    return False


if __name__ == '__main__':
    # 1 、输入用户名 输入用户名, 判断 用户名 是否存在存在的话就直接，返回打印信息

    data_dic = dict(eval("{'Username': 'liaosiliang', 'Password': 'lsl1345678'}{'Username': 'liaohongseng', 'Password': '1234567890'}"))
    name = input_username()
    if name is None:
        print("用户名输入错误， 再见")
        exit(0)
    #2、输入密码
    pass_word = input_password()
    if pass_word is None:
        print("密码输入不符合要求，再见")
        exit(0)
    # 3、 确定密码
    if not input_cpassword(pass_word):
        print("两次输入的密码不一致，再见")
        exit(0)
    else:
        #4、 写入文件
        with open('./reg.txt', 'a+') as reginfo:
            reg_one = {"Username": name, "Password": pass_word}
            reginfo.write(str(reg_one))
            reginfo.write("\n")
            print(f"恭喜您用户{name}注册成功~！")



